from functools import wraps
import math

'''
基于类实现的装饰器
装饰器函数其实是这样一个接口约束，它必须接受一个callable对象作为参数，然后返回一个callable对象
'''
# 装饰器类
class logit(object):
    def __init__(self,logfile='out.log'):
         self.logfile=logfile
    def __call__(self,func):
        @wraps(func)
        def func_decorator(*args,**kargs):
            print('func decorator called! args {} ,kargs {} '.format(args,kargs))
            return func(*args,**kargs)
        return func_decorator


@logit(logfile='out1.log')    
def func(x,y):
    print('参数是{}'.format(x+y))


func(10,20)